package com.ruomeng.robot.util;

import java.util.Random;

import org.apache.commons.lang.StringUtils;

public class SysStringUtils extends StringUtils {

	private static String randomStr = "0123456789";

	/**
	 * 转化为大写
	 * 
	 * @param str
	 *            要被转化的字符串
	 * @param start
	 *            开始的位置
	 * @param end
	 *            结束的位置
	 * @return
	 */
	public static String toUpperCase(final String str, final int start,
			final int end) {

		if (StringUtils.isEmpty(str)) {
			return str;
		}
		StringBuffer sb = new StringBuffer();
		sb.append(str.substring(0, start));
		sb.append(str.substring(start, end).toUpperCase());
		sb.append(str.substring(end));
		return sb.toString();
	}

	/**
	 * 转化为小写
	 * 
	 * @param str
	 *            要被转化的字符串
	 * @param start
	 *            开始的位置
	 * @param end
	 *            结束的位置
	 * @return
	 */
	public static String toLowerCase(final String str, final int start,
			final int end) {

		if (StringUtils.isEmpty(str)) {
			return str;
		}
		StringBuffer sb = new StringBuffer();
		sb.append(str.substring(0, start));
		sb.append(str.substring(start, end).toLowerCase());
		sb.append(str.substring(end));
		return sb.toString();
	}

	/**
	 * 获取随机字符串
	 * 
	 * @param num
	 *            个数
	 * @param str
	 *            从传入的字符串范围内获取
	 * @return
	 */
	public static String getRandomString(final int num, final String str) {
		if (StringUtils.isEmpty(str)) {
			throw new RuntimeException("传入的字符串不能为空");
		}
		StringBuffer sb = new StringBuffer();
		int length = str.length();
		Random random = new Random();
		for (int i = 0; i < num; i++) {
			sb.append(str.charAt(random.nextInt(length)));
		}
		return sb.toString();
	}

	public static String getRandomString(final int num) {
		StringBuffer sb = new StringBuffer();
		int length = randomStr.length();
		Random random = new Random();
		for (int i = 0; i < num; i++) {
			sb.append(randomStr.charAt(random.nextInt(length)));
		}
		return sb.toString();
	}

	/**
	 * 严格判断是否包含 就是如果两个字符串相等表示不包含
	 * 
	 * @param containStr
	 * @param containedStr
	 * @return
	 */
	public static boolean strictContain(final String containStr,
			final String containedStr) {
		if (StringUtils.isEmpty(containedStr)) {
			return false;
		}
		if (containStr != null && !containStr.equals(containedStr)
				&& containStr.contains(containedStr)) {
			return true;
		}

		return false;

	}

	/**
	 * 判断是否包含 就是如果两个字符串相等表示不包含
	 * 
	 * @param containStr
	 * @param containedStr
	 * @return
	 */
	public static boolean contain(final String containStr,
			final String containedStr) {
		if (StringUtils.isEmpty(containedStr)||StringUtils.isEmpty(containedStr)) {
			return false;
		}
		if (containStr != null && !containStr.equals(containedStr)
				&& containStr.contains(containedStr)) {
			return true;
		}

		return false;

	}
}
